package tipos;

/**
 *
 * A classe NumeroVoo representa o domínio número de vôo.
 * @author Daniel Saad
 */
public class NumeroVoo {

    /**
    * Constante que representa a quantidade de dígitos
    * de um número de vôo.
    */
    private static final int TAM_VOO = 6;
   /**
    * O método validar é responsável verificar
    * se o número de vôo está de acordo com o domínio.
    * @param numeroDeVoo String a ser validada
    * @exception NullPointerException
    * @exception IllegalArgumentException
    */
   public static void validar(final String numeroDeVoo) {
       if (numeroDeVoo == null) {
           throw new NullPointerException("Numero de voo nulo.");
       }

       if (numeroDeVoo.length() != TAM_VOO) {
           throw new IllegalArgumentException("Numero de voo inválido, "
                   + "tamanho maior que o permitido.");
       }
       for (int i = 0; i < 3; i++) {
           if (!Character.isLetter(numeroDeVoo.charAt(i))) {
               throw new IllegalArgumentException("Numero de voo inválido, "
                       + " os três primeiros elementos"
                       + " não são compostos apenas por letras.");
           }
       }
       for (int i = 3; i < TAM_VOO; i++) {
           if (!Character.isDigit(numeroDeVoo.charAt(i))) {
               throw new IllegalArgumentException("Número de voo inválido,"
                       + " Os três últimos elementos"
                       + "não são compostos apenas por dígitos.");
           }
       }
    }
}
